factorial program in c using recursion with explanation